#pragma once

#include <string>
#include <map>
#include <memory>
#include <crow.h>

class TemplateManager {
public:
    static TemplateManager& getInstance();
    
    // 渲染模板
    std::string render(const std::string& template_name, 
                      const std::map<std::string, std::string>& data = {});
    
    // 设置布局模板
    void setLayout(const std::string& layout_name);
    
    // 设置模板目录
    void setTemplateDir(const std::string& dir) { template_dir_ = dir; }
    
private:
    TemplateManager() = default;
    TemplateManager(const TemplateManager&) = delete;
    TemplateManager& operator=(const TemplateManager&) = delete;
    
    std::string layout_template_;
    std::string template_dir_ = "views";
    std::string readTemplate(const std::string& template_name);
    std::string processTemplate(const std::string& template_content, 
                              const std::map<std::string, std::string>& data);
}; 